﻿//начало текста модуля

///////////////////////////////////////////////////
//Служебные функции и процедуры
///////////////////////////////////////////////////

&НаКлиенте
// контекст фреймворка Vanessa-Behavior
Перем Ванесса;
 
&НаКлиенте
// Структура, в которой хранится состояние сценария между выполнением шагов. Очищается перед выполнением каждого сценария.
Перем Контекст Экспорт;
 
&НаКлиенте
// Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-Behavior.
Перем КонтекстСохраняемый Экспорт;

&НаКлиенте
// Служебная функция.
Функция ДобавитьШагВМассивТестов(МассивТестов,Снипет,ИмяПроцедуры,ПредставлениеТеста = Неопределено,Транзакция = Неопределено,Параметр = Неопределено)
	Структура = Новый Структура;
	Структура.Вставить("Снипет",Снипет);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ПредставлениеТеста",ПредставлениеТеста);
	Структура.Вставить("Транзакция",Транзакция);
	Структура.Вставить("Параметр",Параметр);
	МассивТестов.Добавить(Структура);
КонецФункции

&НаКлиенте
// Функция экспортирует список шагов, которые реализованы в данной внешней обработке.
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
	Ванесса = КонтекстФреймворкаBDD;
	
	ВсеТесты = Новый Массив;

	//описание параметров
	//ДобавитьШагВМассивТестов(ВсеТесты,Снипет,ИмяПроцедуры,ПредставлениеТеста,Транзакция,Параметр);

	ДобавитьШагВМассивТестов(ВсеТесты,"ВПолеСИменемЯУказываюПутьККаталогуФич(Парам01,Парам02)","ВПолеСИменемЯУказываюПутьККаталогуФич","И В поле с именем ""КаталогФичСлужебный"" я указываю путь к каталогу фич ""StepsRunner""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ДеревоФичЗагрузилосьКорректноСогласноИерархииКаталогов()","ДеревоФичЗагрузилосьКорректноСогласноИерархииКаталогов","И Дерево фич загрузилось корректно согласно иерархии каталогов");

	Возврат ВсеТесты;
КонецФункции
	
&НаСервере
// Служебная функция.
Функция ПолучитьМакетСервер(ИмяМакета)
	ОбъектСервер = РеквизитФормыВЗначение("Объект");
	Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета);
КонецФункции
	
&НаКлиенте
// Служебная функция для подключения библиотеки создания fixtures.
Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт
	Возврат ПолучитьМакетСервер(ИмяМакета);
КонецФункции



///////////////////////////////////////////////////
//Работа со сценариями
///////////////////////////////////////////////////

&НаКлиенте
// Процедура выполняется перед началом каждого сценария
Процедура ПередНачаломСценария() Экспорт
	
КонецПроцедуры

&НаКлиенте
// Процедура выполняется перед окончанием каждого сценария
Процедура ПередОкончаниемСценария() Экспорт
	
КонецПроцедуры



///////////////////////////////////////////////////
//Реализация шагов
///////////////////////////////////////////////////

&НаКлиенте
//И В поле с именем "КаталогФичСлужебный" я указываю путь к каталогу фич "StepsRunner"
//@ВПолеСИменемЯУказываюПутьККаталогуФич(Парам01,Парам02)
Процедура ВПолеСИменемЯУказываюПутьККаталогуФич(ИмяПоля,ИмяФичи) Экспорт
	//Ванесса.ПосмотретьЗначение(КонтекстСохраняемый,Истина);
	ПутьКФичам = Ванесса.Объект.КаталогИнструментов + "\features\" + ИмяФичи;
	Ванесса.Шаг("И В открытой форме в поле с именем """ + ИмяПоля + """ я ввожу текст """ + ПутьКФичам + """");
КонецПроцедуры



&НаКлиенте
//И Дерево фич загрузилось корректно согласно иерархии каталогов
//@ДеревоФичЗагрузилосьКорректноСогласноИерархииКаталогов()
Процедура ДеревоФичЗагрузилосьКорректноСогласноИерархииКаталогов() Экспорт
	ЗначениеДереваTestClient = Ванесса.ПолучитьЗначениеРеквизитаОткрытойФормыПоИмени("ДеревоТестов");
	
	//ЗначениеДереваTestClient[0]["Полный путь"]
	НомСтр = 0;
	Для Сч = 0 По ЗначениеДереваTestClient.Количество()-2 Цикл
		НомСтр = НомСтр + 1;
		ПутьТек  = ЗначениеДереваTestClient[Сч]["Полный путь"];
		ПутьСлед = ЗначениеДереваTestClient[Сч+1]["Полный путь"];
		
		Если (НРег(Прав(ПутьТек,8)) = ".feature") и (НРег(Прав(ПутьСлед,8)) = ".feature") Тогда
			//значит идёт в дереве две строки с буквой F подряд, а это неправильно
			ВызватьИсключение "В строке дерева " + НомСтр + " и в следующей лежит значение фичи, а так не должно быть! <" + ПутьТек + "> <" + ПутьСлед + ">";
		КонецЕсли;	 
		
	
	КонецЦикла; 
	
КонецПроцедуры

//окончание текста модуля
